<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="./js/ctx.js"></script>
</head>
<body>
<div id="cesiumContainer"></div>
<div id="toolbar">
    <div id="propertiesMenu"></div>
</div>
<script>
    var initCesium = new InitCesium();
    var viewer = initCesium.initViewer('cesiumContainer', {
        shouldAnimate : true,
        timeline:true,
        animation: true
    });

    var modelCzml = [{
        "id" : "document",
        "name" : "CZML Model",
        "version" : "1.0"
    }, {
        "id" : "aircraft model",
        "name" : "Cesium Air",
        "position" : {
            "cartographicDegrees" : [-77, 37, 0]
        },
        "model": {
            "gltf" : "../data/models/CesiumMilkTruck/CesiumMilkTruck.glb"
        }
    }];

    function downloadBlob(filename, blob) {
        if (window.navigator.msSaveOrOpenBlob) {
            window.navigator.msSaveBlob(blob, filename);
        } else {
            var elem = window.document.createElement('a');
            elem.href = window.URL.createObjectURL(blob);
            elem.download = filename;
            document.body.appendChild(elem);
            elem.click();
            document.body.removeChild(elem);
        }
    }

    function reset() {
        viewer.trackedEntity = undefined;
        viewer.dataSources.removeAll();
    }

    // We fetch the resources that will be embedded in the KMZ file.
    var daeModelPromise = Cesium.Resource.fetchBlob({
        url: '../data/models/CesiumMilkTruck/CesiumMilkTruck.dae'
    });

    var texturePromise = Cesium.Resource.fetchBlob({
        url: '../data/models/CesiumMilkTruck/CesiumMilkTruck.png'
    });

    // This callback allows us to set the URL of the model to use
    // a COLLADA version of the model instead of the glTF version.
    // It also lets us specify the files that will be embedded in the exported KMZ.
    function modelCallback(modelGraphics, time, externalFiles) {
        var resource = modelGraphics.uri.getValue(time);

        if (resource.url.indexOf('CesiumMilkTruck') !== -1) {
            externalFiles['model/CesiumMilkTruck.dae'] = daeModelPromise;
            externalFiles['model/CesiumMilkTruck.png'] = texturePromise;

            return 'model/CesiumMilkTruck.dae';
        }

        throw Cesium.RuntimeError('Unknown Model');
    }

    var filenameToSave = '';
    var dataSourcePromise;

    Sandcastle.addToolbarMenu([{
        text: 'Satellites',
        onselect: function () {
            reset();
            filenameToSave = 'Satellites.kmz';
            dataSourcePromise = Cesium.CzmlDataSource.load('../data/simple.czml');
            viewer.dataSources.add(dataSourcePromise);

            viewer.camera.flyHome(0);
        }
    }, {
        text: 'Model',
        onselect: function () {
            reset();
            filenameToSave = 'Model.kmz';
            dataSourcePromise = Cesium.CzmlDataSource.load(modelCzml);
            viewer.dataSources.add(dataSourcePromise)
                    .then(function(dataSource) {
                        viewer.trackedEntity = dataSource.entities.getById('aircraft model');
                    });
        }
    }], 'propertiesMenu');

    Sandcastle.addToolbarButton('Download', function() {
        dataSourcePromise
                .then(function(dataSource) {
                    return Cesium.exportKml({
                        entities: dataSource.entities,
                        kmz: true,
                        modelCallback: modelCallback
                    });
                })
                .then(function(result) {
                    downloadBlob(filenameToSave, result.kmz);
                });
    });



</script>
</body>
</html>